﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;

namespace Cotizav.AccesoDatos
{
    public class CotizacionCondicionDAO
    {
        public int Registrar(Util.ContextoDB ctx, Entidades.Cotizacion newCotizacion, Entidades.CotizacionCondicion newCotizacionCondicion)
        {
            SqlCommand cmd = new SqlCommand("USP_COTIZACIONCONDICION_INSERT", ctx.GetConexion(), ctx.GetTx());
            cmd.CommandType = System.Data.CommandType.StoredProcedure;

            cmd.Parameters.AddWithValue("@IDCOTIZACION", newCotizacion.IdCotizacion);
            cmd.Parameters.AddWithValue("@DESCRIPCION", newCotizacionCondicion.Descripcion ?? (object)DBNull.Value);
            cmd.Parameters.AddWithValue("@IDTIPOCONDICION", newCotizacionCondicion.IdTipoCondicion.HasValue ? newCotizacionCondicion.IdTipoCondicion.Value : (object)DBNull.Value);
            cmd.Parameters.AddWithValue("@TIPOCONDICION", newCotizacionCondicion.TipoCondicion ?? (object)DBNull.Value);

            int result = cmd.ExecuteNonQuery();

            return result;
        }

        public List<Entidades.CotizacionCondicion> Listar(Util.ContextoDB ctx, Entidades.Cotizacion cotizacion)
        {
            SqlCommand cmd = new SqlCommand(string.Format("select * from COTIZACION_CONDICION where IdCotizacion = {0}", cotizacion.IdCotizacion), ctx.GetConexion());
            DataTable dtCotizacionCondicion = new DataTable();
            dtCotizacionCondicion.Load(cmd.ExecuteReader());

            List<Entidades.CotizacionCondicion> lista = new List<Entidades.CotizacionCondicion>();

            foreach (DataRow fila in dtCotizacionCondicion.Rows)
            {
                Entidades.CotizacionCondicion cc = new Entidades.CotizacionCondicion();

                cc.IdCotizacionCondicion = Int32.Parse(fila["ID"].ToString());
                cc.IdCotizacion = !(fila["IDCOTIZACION"] is DBNull) ? Int32.Parse(fila["IDCOTIZACION"].ToString()) : new Nullable<int>();
                cc.Descripcion = fila["DESCRIPCION"].ToString();
                cc.IdTipoCondicion = !(fila["IDTIPOCONDICION"] is DBNull) ? Int32.Parse(fila["IDTIPOCONDICION"].ToString()) : new Nullable<int>();
                cc.TipoCondicion = fila["TIPOCONDICION"].ToString();

                lista.Add(cc);
            }

            return lista;
        }
    }
}
